home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 1: Comms & Networking / Almathera Ten on Ten - Disc 1: Comms & Networking.iso / generalinfo / internetstandards / rfc / 1000-1299 / rfc1006.txt < prev    next >
Text File  |  1992-06-15  |  31KB  |  1,064 lines

  1.  
  2.  
  3.  
  4.  
  5. Network Working Group                    Marshall T. Rose, Dwight E. Cass
  6. Request for Comments: RFC 1006    Northrop Research and Technology Center
  7. Obsoletes: RFC 983                                               May 1987
  8.  
  9.  
  10.  
  11.                 ISO Transport Service on top of the TCP
  12.                                Version: 3
  13.  
  14.  
  15. Status of this Memo
  16.  
  17.    This memo specifies a standard for the Internet community. Hosts
  18.    on the Internet that choose to implement ISO transport services
  19.    on top of the TCP are expected to adopt and implement this
  20.    standard.  TCP port 102 is reserved for hosts which implement this
  21.    standard.  Distribution of this memo is unlimited.
  22.  
  23.    This memo specifies version 3 of the protocol and supersedes
  24.    [RFC983].  Changes between the protocol as described in Request for
  25.    Comments 983 and this memo are minor, but are unfortunately
  26.    incompatible.
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. M. Rose & D. Cass                                               [Page 1]
  60.  
  61. RFC 1006                                                        May 1987
  62.  
  63.  
  64. 1.  Introduction and Philosophy
  65.  
  66.  
  67.       The Internet community has a well-developed, mature set of
  68.       transport and internetwork protocols (TCP/IP), which are quite
  69.       successful in offering network and transport services to
  70.       end-users. The CCITT and the ISO have defined various session,
  71.       presentation, and application recommendations which have been
  72.       adopted by the international community and numerous vendors.
  73.       To the largest extent possible, it is desirable to offer these
  74.       higher level directly in the ARPA Internet, without disrupting
  75.       existing facilities.  This permits users to develop expertise
  76.       with ISO and CCITT applications which previously were not
  77.       available in the ARPA Internet.  It also permits a more
  78.       graceful convergence and transition strategy from
  79.       TCP/IP-based networks to ISO-based networks in the
  80.       medium-and long-term.
  81.  
  82.       There are two basic approaches which can be taken when "porting"
  83.       an ISO or CCITT application to a TCP/IP environment.  One
  84.       approach is to port each individual application separately,
  85.       developing local protocols on top of the TCP.  Although this is
  86.       useful in the short-term (since special-purpose interfaces to the
  87.       TCP can be developed quickly), it lacks generality.
  88.  
  89.       A second approach is based on the observation that both the ARPA
  90.       Internet protocol suite and the ISO protocol suite are both
  91.       layered systems (though the former uses layering from a more
  92.       pragmatic perspective).  A key aspect of the layering principle
  93.       is that of layer-independence.  Although this section is
  94.       redundant for most readers, a slight bit of background material
  95.       is necessary to introduce this concept.
  96.  
  97.       Externally, a layer is defined by two definitions:
  98.  
  99.          a service-offered definition, which describes the services
  100.          provided by the layer and the interfaces it provides to
  101.          access those services; and,
  102.  
  103.          a service-required definitions, which describes the services
  104.          used by the layer and the interfaces it uses to access those
  105.          services.
  106.  
  107.       Collectively, all of the entities in the network which co-operate
  108.       to provide the service are known as the service-provider.
  109.       Individually, each of these entities is known as a service-peer.
  110.  
  111.       Internally, a layer is defined by one definition:
  112.  
  113.           a protocol definition, which describes the rules which each
  114.           service-peer uses when communicating with other service-peers.
  115.  
  116.  
  117.  
  118. M. Rose & D. Cass                                               [Page 2]
  119.  
  120. RFC 1006                                                        May 1987
  121.  
  122.  
  123.       Putting all this together, the service-provider uses the protocol
  124.       and services from the layer below to offer the its service to the
  125.       layer above.  Protocol verification, for instance, deals with
  126.       proving that this in fact happens (and is also a fertile field
  127.       for many Ph.D. dissertations in computer science).
  128.  
  129.       The concept of layer-independence quite simply is:
  130.  
  131.           IF one preserves the services offered by the service-provider
  132.  
  133.           THEN the service-user is completely naive with respect to the
  134.           protocol which the service-peers use
  135.  
  136.  
  137.       For the purposes of this memo, we will use the layer-independence
  138.       to define a Transport Service Access Point (TSAP) which appears
  139.       to be identical to the services and interfaces offered by the
  140.       ISO/CCITT TSAP (as defined in [ISO8072]), but we will in fact
  141.       implement the ISO TP0 protocol on top of TCP/IP (as defined in
  142.       [RFC793,RFC791]), not on top of the the ISO/CCITT network
  143.       protocol.  Since the transport class 0 protocol is used over the
  144.       TCP/IP connection, it achieves identical functionality as
  145.       transport class 4.  Hence, ISO/CCITT higher level layers (all
  146.       session, presentation, and application entities) can operate
  147.       fully without knowledge of the fact that they are running on a
  148.       TCP/IP internetwork.
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. M. Rose & D. Cass                                               [Page 3]
  178.  
  179. RFC 1006                                                        May 1987
  180.  
  181.  
  182. 2.  Motivation
  183.  
  184.  
  185.       In migrating from the use of TCP/IP to the ISO protocols, there
  186.       are several strategies that one might undertake.  This memo was
  187.       written with one particular strategy in mind.
  188.  
  189.       The particular migration strategy which this memo uses is based
  190.       on the notion of gatewaying between the TCP/IP and ISO protocol
  191.       suites at the transport layer.  There are two strong arguments
  192.       for this approach:
  193.  
  194.       1.  Experience teaches us that it takes just as long to get good
  195.       implementations of the lower level protocols as it takes to get
  196.       implementations of the higher level ones.  In particular, it has
  197.       been observed that there is still a lot of work being done at the
  198.       ISO network and transport layers.  As a result, implementations
  199.       of protocols above these layers are not being aggressively
  200.       pursued. Thus, something must be done "now" to provide a medium
  201.       in which the higher level protocols can be developed.  Since
  202.       TCP/IP is mature, and essentially provides identical
  203.       functionality, it is an ideal medium to support this development.
  204.  
  205.       2.  Implementation of gateways at the IP and ISO IP layers are
  206.       probably not of general use in the long term.  In effect, this
  207.       would require each Internet host to support both TP4 and TCP.
  208.       As such, a better strategy is to implement a graceful migration
  209.       path from TCP/IP to ISO protocols for the ARPA Internet when the
  210.       ISO protocols have matured sufficiently.
  211.  
  212.       Both of these arguments indicate that gatewaying should occur at
  213.       or above the transport layer service access point.  Further, the
  214.       first argument suggests that the best approach is to perform the
  215.       gatewaying exactly AT the transport service access point to
  216.       maximize the number of ISO layers which can be developed.
  217.  
  218.         NOTE:     This memo does not intend to act as a migration or
  219.                   intercept document.  It is intended ONLY to meet the
  220.                   needs discussed above.  However, it would not be
  221.                   unexpected that the protocol described in this memo
  222.                   might form part of an overall transition plan.  The
  223.                   description of such a plan however is COMPLETELY
  224.                   beyond the scope of this memo.
  225.  
  226.       Finally, in general, building gateways between other layers in the
  227.       TCP/IP and ISO protocol suites is problematic, at best.
  228.  
  229.       To summarize: the primary motivation for the standard described in
  230.       this memo is to facilitate the process of gaining experience with
  231.       higher-level ISO protocols (session, presentation, and
  232.       application). The stability and maturity of TCP/IP are ideal for
  233.  
  234.  
  235.  
  236. M. Rose & D. Cass                                               [Page 4]
  237.  
  238. RFC 1006                                                        May 1987
  239.  
  240.  
  241.       providing solid transport services independent of actual
  242.       implementation.
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295. M. Rose & D. Cass                                               [Page 5]
  296.  
  297. RFC 1006                                                        May 1987
  298.  
  299.  
  300. 3.  The Model
  301.  
  302.  
  303.       The [ISO8072] standard describes the ISO transport service
  304.       definition, henceforth called TP.
  305.  
  306.           ASIDE:    This memo references the ISO specifications rather
  307.                     than the CCITT recommendations.  The differences
  308.                     between these parallel standards are quite small,
  309.                     and can be ignored, with respect to this memo,
  310.                     without loss of generality.  To provide the reader
  311.                     with the relationships:
  312.  
  313.                          Transport service    [ISO8072]       [X.214]
  314.                          Transport protocol   [ISO8073]       [X.224]
  315.                          Session protocol     [ISO8327]       [X.225]
  316.  
  317.  
  318.       The ISO transport service definition describes the services
  319.       offered by the TS-provider (transport service) and the interfaces
  320.       used to access those services.  This memo focuses on how the ARPA
  321.       Transmission Control Protocol (TCP) [RFC793] can be used to offer
  322.       the services and provide the interfaces.
  323.  
  324.  
  325.       +-----------+                                       +-----------+
  326.       |  TS-user  |                                       |  TS-user  |
  327.       +-----------+                                       +-----------+
  328.            |                                                     |
  329.            | TSAP interface                       TSAP interface |
  330.            |  [ISO8072]                                          |
  331.            |                                                     |
  332.       +----------+   ISO Transport Services on the TCP     +----------+
  333.       |  client  |-----------------------------------------|  server  |
  334.       +----------+              (this memo)                +----------+
  335.            |                                                     |
  336.            | TCP interface                         TCP interface |
  337.            |  [RFC793]                                           |
  338.            |                                                     |
  339.  
  340.  
  341.       For expository purposes, the following abbreviations are used:
  342.  
  343.          TS-peer      a process which implements the protocol described
  344.                       by this memo
  345.  
  346.          TS-user      a process talking using the services of a TS-peer
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354. M. Rose & D. Cass                                               [Page 6]
  355.  
  356. RFC 1006                                                        May 1987
  357.  
  358.  
  359.          TS-provider  the black-box entity implementing the protocol
  360.                       described by this memo
  361.  
  362.  
  363.       For the purposes of this memo, which describes version 2 of the
  364.       TSAP protocol, all aspects of [ISO8072] are supported with one
  365.       exception:
  366.  
  367.           Quality of Service parameters
  368.  
  369.  
  370.       In the spirit of CCITT, this is left "for further study".  A
  371.       future version of the protocol will most likely support the QOS
  372.       parameters for TP by mapping these onto various TCP parameters.
  373.  
  374.       The ISO standards do not specify the format of a session port
  375.       (termed a TSAP ID).  This memo mandates the use of the GOSIP
  376.       specification [GOSIP86] for the interpretation of this field.
  377.       (Please refer to Section 5.2, entitled "UPPER LAYERS ADDRESSING".)
  378.  
  379.       Finally, the ISO TSAP is fundamentally symmetric in behavior.
  380.       There is no underlying client/server model.  Instead of a server
  381.       listening on a well-known port, when a connection is established,
  382.       the TS-provider generates an INDICATION event which, presumably
  383.       the TS-user catches and acts upon.  Although this might be
  384.       implemented by having a server "listen" by hanging on the
  385.       INDICATION event, from the perspective of the ISO TSAP, all TS-
  386.       users just sit around in the IDLE state until they either generate
  387.       a REQUEST or accept an INDICATION.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413. M. Rose & D. Cass                                               [Page 7]
  414.  
  415. RFC 1006                                                        May 1987
  416.  
  417.  
  418. 4.  The Primitives
  419.  
  420.  
  421.       The protocol assumes that the TCP[RFC793] offers the following
  422.       service primitives:
  423.  
  424.                                     Events
  425.  
  426.          connected       - open succeeded (either ACTIVE or PASSIVE)
  427.  
  428.          connect fails   - ACTIVE open failed
  429.  
  430.          data ready      - data can be read from the connection
  431.  
  432.          errored         - the connection has errored and is now closed
  433.  
  434.          closed          - an orderly disconnection has started
  435.  
  436.                                      Actions
  437.  
  438.          listen on port  - PASSIVE open on the given port
  439.  
  440.          open port       - ACTIVE open to the given port
  441.  
  442.          read data       - data is read from the connection
  443.  
  444.          send data       - data is sent on the connection
  445.  
  446.          close           - the connection is closed (pending data is
  447.                            sent)
  448.  
  449.  
  450. This memo describes how to use these services to emulate the following
  451. service primitives, which are required by [ISO8073]:
  452.  
  453.                                  Events
  454.  
  455.          N-CONNECT.INDICATION
  456.                           - An NS-user (responder) is notified that
  457.                             connection establishment is in progress
  458.  
  459.  
  460.          N-CONNECT.CONFIRMATION
  461.                           - An NS-user (responder) is notified that
  462.                             the connection has been established
  463.  
  464.          N-DATA.INDICATION
  465.                           - An NS-user is notified that data can be
  466.                             read from the connection
  467.  
  468.  
  469.  
  470.  
  471.  
  472. M. Rose & D. Cass                                               [Page 8]
  473.  
  474. RFC 1006                                                        May 1987
  475.  
  476.  
  477.          N-DISCONNECT.INDICATION
  478.                           - An NS-user is notified that the connection
  479.                             is closed
  480.  
  481.                                 Actions
  482.  
  483.          N-CONNECT.REQUEST
  484.                           - An NS-user (initiator) indicates that it
  485.                             wants to establish a connection
  486.  
  487.          N-CONNECT.RESPONSE
  488.                           - An NS-user (responder) indicates that it
  489.                             will honor the request
  490.  
  491.          N-DATA.REQUEST   - An NS-user sends data
  492.  
  493.          N-DISCONNECT.REQUEST
  494.                           - An NS-user indicates that the connection
  495.                             is to be closed
  496.  
  497.       The protocol offers the following service primitives, as defined
  498.       in [ISO8072], to the TS-user:
  499.  
  500.                                     Events
  501.  
  502.          T-CONNECT.INDICATION
  503.                           - a TS-user (responder) is notified that
  504.                             connection establishment is in progress
  505.  
  506.          T-CONNECT.CONFIRMATION
  507.                           - a TS-user (initiator) is notified that the
  508.                             connection has been established
  509.  
  510.          T-DATA.INDICATION
  511.                           - a TS-user is notified that data can be read
  512.                             from the connection
  513.  
  514.          T-EXPEDITED DATA.INDICATION
  515.                           - a TS-user is notified that "expedited" data
  516.                             can be read from the connection
  517.  
  518.          T-DISCONNECT.INDICATION
  519.                           - a TS-user is notified that the connection
  520.                             is closed
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531. M. Rose & D. Cass                                               [Page 9]
  532.  
  533. RFC 1006                                                        May 1987
  534.  
  535.  
  536.                                 Actions
  537.  
  538.          T-CONNECT.REQUEST
  539.                           - a TS-user (initiator) indicates that it
  540.                             wants to establish a connection
  541.  
  542.          T-CONNECT.RESPONSE
  543.                           - a TS-user (responder) indicates that it
  544.                             will honor the request
  545.  
  546.          T-DATA.REQUEST   - a TS-user sends data
  547.  
  548.          T-EXPEDITED DATA.REQUEST
  549.                           - a TS-user sends "expedited" data
  550.  
  551.          T-DISCONNECT.REQUEST
  552.                           - a TS-user indicates that the connection
  553.                             is to be closed
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590. M. Rose & D. Cass                                              [Page 10]
  591.  
  592. RFC 1006                                                        May 1987
  593.  
  594.  
  595. 5.  The Protocol
  596.  
  597.  
  598.       The protocol specified by this memo is identical to the protocol
  599.       for ISO transport class 0, with the following exceptions:
  600.  
  601.             - for testing purposes, initial data may be exchanged
  602.               during connection establishment
  603.  
  604.             - for testing purposes, an expedited data service is
  605.               supported
  606.  
  607.             - for performance reasons, a much larger TSDU size is
  608.               supported
  609.  
  610.             - the network service used by the protocol is provided
  611.               by the TCP
  612.  
  613.  
  614.       The ISO transport protocol exchanges information between peers in
  615.       discrete units of information called transport protocol data units
  616.       (TPDUs).  The protocol defined in this memo encapsulates these
  617.       TPDUs in discrete units called TPKTs.  The structure of these
  618.       TPKTs and their relationship to TPDUs are discussed in the next
  619.       section.
  620.  
  621.       PRIMITIVES
  622.  
  623.          The mapping between the TCP service primitives and the service
  624.          primitives expected by transport class 0 are quite straight-
  625.          forward:
  626.  
  627.                    network service              TCP
  628.                    ---------------              ---
  629.                    CONNECTION ESTABLISHMENT
  630.  
  631.                        N-CONNECT.REQUEST        open completes
  632.  
  633.                        N-CONNECT.INDICATION     listen (PASSIVE open)
  634.                                                 finishes
  635.  
  636.                        N-CONNECT.RESPONSE       listen completes
  637.  
  638.                        N-CONNECT.CONFIRMATION   open (ACTIVE open)
  639.                                                 finishes
  640.  
  641.                    DATA TRANSFER
  642.  
  643.                        N-DATA.REQUEST           send data
  644.  
  645.                        N-DATA.INDICATION        data ready followed by
  646.  
  647.  
  648.  
  649. M. Rose & D. Cass                                              [Page 11]
  650.  
  651. RFC 1006                                                        May 1987
  652.  
  653.  
  654.                                                 read data
  655.  
  656.                    CONNECTION RELEASE
  657.  
  658.                        N-DISCONNECT.REQUEST     close
  659.  
  660.                        N-DISCONNECT.INDICATION  connection closes or
  661.                                                 errors
  662.  
  663.           Mapping parameters is also straight-forward:
  664.  
  665.                      network service             TCP
  666.                      ---------------             ---
  667.                      CONNECTION RELEASE
  668.  
  669.                          Called address          server's IP address
  670.                                                  (4 octets)
  671.  
  672.                          Calling address         client's IP address
  673.                                                  (4 octets)
  674.  
  675.                          all others              ignored
  676.  
  677.                       DATA TRANSFER
  678.  
  679.                          NS-user data (NSDU)     data
  680.  
  681.                       CONNECTION RELEASE
  682.  
  683.                          all parameters          ignored
  684.  
  685.  
  686.  
  687.       CONNECTION ESTABLISHMENT
  688.  
  689.           The elements of procedure used during connection establishment
  690.           are identical to those presented in [ISO8073], with three
  691.           exceptions.
  692.  
  693.           In order to facilitate testing, the connection request and
  694.           connection confirmation TPDUs may exchange initial user data,
  695.           using the user data fields of these TPDUs.
  696.  
  697.           In order to experiment with expedited data services, the
  698.           connection request and connection confirmation TPDUs may
  699.           negotiate the use of expedited data transfer using the
  700.           negotiation mechanism specified in [ISO8073] is used (e.g.,
  701.           setting the "use of transport expedited data transfer service"
  702.           bit in the "Additional Option Selection" variable part). The
  703.           default is not to use the transport expedited data transfer
  704.           service.
  705.  
  706.  
  707.  
  708. M. Rose & D. Cass                                              [Page 12]
  709.  
  710. RFC 1006                                                        May 1987
  711.  
  712.  
  713.           In order to achieve good performance, the default TPDU size is
  714.           65531 octets, instead of 128 octets.  In order to negotiate a
  715.           smaller (standard) TPDU size, the negotiation mechanism
  716.           specified in [ISO8073] is used (e.g., setting the desired bit
  717.           in the "TPDU Size" variable part).
  718.  
  719.           To perform an N-CONNECT.REQUEST action, the TS-peer performs
  720.           an active open to the desired IP address using TCP port 102.
  721.           When the TCP signals either success or failure, this results
  722.           in an N-CONNECT.INDICATION action.
  723.  
  724.           To await an N-CONNECT.INDICATION event, a server listens on
  725.           TCP port 102.  When a client successfully connects to this
  726.           port, the event occurs, and an implicit N-CONNECT.RESPONSE
  727.           action is performed.
  728.  
  729.               NOTE:      In most implementations, a single server will
  730.                          perpetually LISTEN on port 102, handing off
  731.                          connections as they are made
  732.  
  733. DATA TRANSFER
  734.  
  735.       The elements of procedure used during data transfer are identical
  736.       to those presented in [ISO8073], with one exception: expedited
  737.       data may be supported (if so negotiated during connection
  738.       establishment) by sending a modified ED TPDU (described below).
  739.       The TPDU is sent on the same TCP connection as all of the other
  740.       TPDUs. This method, while not faithful to the spirit of [ISO8072],
  741.       is true to the letter of the specification.
  742.  
  743.       To perform an N-DATA.REQUEST action, the TS-peer constructs the
  744.       desired TPKT and uses the TCP send data primitive.
  745.  
  746.       To trigger an N-DATA.INDICATION action, the TCP indicates that
  747.       data is ready and a TPKT is read using the TCP read data
  748.       primitive.
  749.  
  750. CONNECTION RELEASE
  751.  
  752.    To perform an N-DISCONNECT.REQUEST action, the TS-peer simply closes
  753.    the TCP connection.
  754.  
  755.    If the TCP informs the TS-peer that the connection has been closed or
  756.    has errored, this indicates an N-DISCONNECT.INDICATION event.
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767. M. Rose & D. Cass                                              [Page 13]
  768.  
  769. RFC 1006                                                        May 1987
  770.  
  771.  
  772. 6.  Packet Format
  773.  
  774.  
  775.       A fundamental difference between the TCP and the network service
  776.       expected by TP0 is that the TCP manages a continuous stream of
  777.       octets, with no explicit boundaries.  The TP0 expects information
  778.       to be sent and delivered in discrete objects termed network
  779.       service data units (NSDUs).  Although other classes of transport
  780.       may combine more than one TPDU inside a single NSDU, transport
  781.       class 0 does not use this facility.  Hence, an NSDU is identical
  782.       to a TPDU for the purposes of our discussion.
  783.  
  784.       The protocol described by this memo uses a simple packetization
  785.       scheme in order to delimit TPDUs.  Each packet, termed a TPKT, is
  786.       viewed as an object composed of an integral number of octets, of
  787.       variable length.
  788.  
  789.           NOTE:       For the purposes of presentation, these objects are
  790.                       shown as being 4 octets (32 bits wide).  This
  791.                       representation is an artifact of the style of this
  792.                       memo and should not be interpreted as requiring
  793.                       that a TPKT be a multiple of 4 octets in length.
  794.  
  795.       A TPKT consists of two parts:  a packet-header and a TPDU.  The
  796.       format of the header is constant regardless of the type of packet.
  797.       The format of the packet-header is as follows:
  798.  
  799.         0                   1                   2                   3
  800.         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  801.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  802.        |      vrsn     |    reserved   |          packet length        |
  803.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  804.  
  805.       where:
  806.  
  807.       vrsn                         8 bits
  808.  
  809.       This field is always 3 for the version of the protocol described in
  810.       this memo.
  811.  
  812.       packet length                16 bits (min=7, max=65535)
  813.  
  814.       This field contains the length of entire packet in octets,
  815.       including packet-header.  This permits a maximum TPDU size of
  816.       65531 octets.  Based on the size of the data transfer (DT) TPDU,
  817.       this permits a maximum TSDU size of 65524 octets.
  818.  
  819.       The format of the TPDU is defined in [ISO8073].  Note that only
  820.       TPDUs formatted for transport class 0 are exchanged (different
  821.       transport classes may use slightly different formats).
  822.  
  823.  
  824.  
  825.  
  826. M. Rose & D. Cass                                              [Page 14]
  827.  
  828. RFC 1006                                                        May 1987
  829.  
  830.  
  831.       To support expedited data, a non-standard TPDU, for expedited data
  832.       is permitted.  The format used for the ED TPDU is nearly identical
  833.       to the format for the normal data, DT, TPDU.  The only difference
  834.       is that the value used for the TPDU's code is ED, not DT:
  835.  
  836.        0                   1                   2                   3
  837.        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  838.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  839.       | header length | code  |credit |TPDU-NR and EOT|   user data   |
  840.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  841.       |      ...      |      ...      |      ...      |      ...      |
  842.       |      ...      |      ...      |      ...      |      ...      |
  843.       |      ...      |      ...      |      ...      |      ...      |
  844.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  845.  
  846.       After the credit field (which is always ZERO on output and ignored
  847.       on input), there is one additional field prior to the user data.
  848.  
  849.       TPDU-NR and EOT         8 bits
  850.  
  851.       Bit 7 (the high-order bit, bit mask 1000 0000) indicates the end
  852.       of a XSDU (expedited TSDU).  All other bits should be ZERO on
  853.       output and ignored on input.
  854.  
  855.       Note that the TP specification limits the size of an expedited
  856.       transport service data unit (XSDU) to 16 octets.
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885. M. Rose & D. Cass                                              [Page 15]
  886.  
  887. RFC 1006                                                        May 1987
  888.  
  889.  
  890. 7.  Comments
  891.  
  892.  
  893.       Since the release of RFC983 in April of 1986, we have gained much
  894.       experience in using ISO transport services on top of the TCP.  In
  895.       September of 1986, we introduced the use of version 2 of the
  896.       protocol, based mostly on comments from the community.
  897.  
  898.       In January of 1987, we observed that the differences between
  899.       version 2 of the protocol and the actual transport class 0
  900.       definition were actually quite small.  In retrospect, this
  901.       realization took much longer than it should have:  TP0 is is meant
  902.       to run over a reliable network service, e.g., X.25. The TCP can be
  903.       used to provide a service of this type, and, if no one complains
  904.       too loudly, one could state that this memo really just describes a
  905.       method for encapsulating TPO inside of TCP!
  906.  
  907.       The changes in going from version 1 of the protocol to version 2
  908.       and then to version 3 are all relatively small. Initially, in
  909.       describing version 1, we decided to use the TPDU formats from the
  910.       ISO transport protocol.  This naturally led to the evolution
  911.       described above.
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944. M. Rose & D. Cass                                              [Page 16]
  945.  
  946. RFC 1006                                                        May 1987
  947.  
  948.  
  949. 8. References
  950.  
  951.  
  952.    [GOSIP86]    The U.S. Government OSI User's Committee.
  953.                 "Government Open Systems Interconnection Procurement
  954.                 (GOSIP) Specification for Fiscal years 1987 and
  955.                 1988." (December, 1986) [draft status]
  956.  
  957.    [ISO8072]    ISO.
  958.                 "International Standard 8072.  Information Processing
  959.                 Systems -- Open Systems Interconnection: Transport
  960.                 Service Definition."
  961.                 (June, 1984)
  962.  
  963.    [ISO8073]    ISO.
  964.                 "International Standard 8073.  Information Processing
  965.                 Systems -- Open Systems Interconnection: Transport
  966.                 Protocol Specification."
  967.                 (June, 1984)
  968.  
  969.    [ISO8327]    ISO.
  970.                 "International Standard 8327.  Information Processing
  971.                 Systems -- Open Systems Interconnection: Session
  972.                 Protocol Specification."
  973.                 (June, 1984)
  974.  
  975.    [RFC791]     Internet Protocol.
  976.                 Request for Comments 791 (MILSTD 1777)
  977.                 (September, 1981)
  978.  
  979.    [RFC793]     Transmission Control Protocol.
  980.                 Request for Comments 793 (MILSTD 1778)
  981.                 (September, 1981)
  982.  
  983.    [RFC983]     ISO Transport Services on Top of the TCP.
  984.                 Request for Comments 983
  985.                 (April, 1986)
  986.  
  987.    [X.214]      CCITT.
  988.                 "Recommendation X.214.  Transport Service Definitions
  989.                 for Open Systems Interconnection (OSI) for CCITT
  990.                 Applications."
  991.                 (October, 1984)
  992.  
  993.    [X.224]      CCITT.
  994.                 "Recommendation X.224.  Transport Protocol
  995.                 Specification for Open Systems Interconnection (OSI)
  996.                 for CCITT Applications." (October, 1984)
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003. M. Rose & D. Cass                                              [Page 17]
  1004.  
  1005. RFC 1006                                                        May 1987
  1006.  
  1007.  
  1008.    [X.225]      CCITT.
  1009.                 "Recommendation X.225.  Session Protocol Specification
  1010.                 for Open Systems Interconnection (OSI) for CCITT
  1011.                 Applications."
  1012.                 (October, 1984)
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062. M. Rose & D. Cass                                              [Page 18]
  1063.  
  1064.